//1.导入axios
import axios from 'axios'

//2.创建请求实例
const instance= axios.create({
    //控制请求超时时间
    timeout:50000
})

//3.编写请求拦截器
instance.interceptors.request.use(
    //参数1：请求发送成功执行的函数
    (req)=>{
        const token=localStorage.getItem("mytoken")
        if(token){
           // req.headers.key=value
           req.headers.token=token
           //注：发送请求头信息 只有post请求设置 get没有请求头
        }
        if(req.method === "post"){
            //处理所有的post请求...
        }
        //...
        return req
    },
    //参数2：请求发送失败执行的函数
    (error)=>{
        //返回成功信息
        //Promise.resolve()
        //返回错误信息
        return Promise.reject(error)
    }
)

//4.编写响应拦截器
instance.interceptors.response.use(
    //参数1：响应成功函数
    resp=>{
        return resp.status==200?Promise.resolve(resp):Promise.reject(resp)
    },
    //参数2：响应失败函数
    error=>{
       const {response} =error
       //response.status=200  301 404
       console.log(error)
       errorMapping(response.status,response.info)
    }
)
//5.编写错误映射(出现什么错误  打印什么错误信息)
const errorMapping=(status:Number,info:String)=>{
    switch(status){
        case 400:console.log("客户端参数异常");break;
        case 404:console.log("地址不对");break;
        case 401:console.log("不知道");break;
        case 500:console.log("服务端异常");break;
        case 502:console.log("不知道");break;
        case 503:console.log("不知道");break;
        default: console.log(info)
    }
}
//6.导出实例
export default instance 